const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

class Jifashi{
    async getIp() {
        return new Promise((resolve,reject)=>{
            try {
                const xhr = new XMLHttpRequest()
                xhr.open('GET','https://ipv4.icanhazip.com/')
                xhr.send()
                // xhr.responseType = 'text'
                xhr.timeout = 3000;
                xhr.onreadystatechange = function () {
                    // readyState存有XMLHttpRequest 的状态，0~4。0——请求未初始化 1——服务器连接已经建立 2——请求已接受 3——请求处理中 4——请求已完成，且响应已就绪。
                    // （2）status，HTTP的特定状态码： 100-199：信息性的标示用户应该采取的其他动作。200-299：表示请求成功。300-399：用于那些已经移走的文件，常常包括Location报头，指出新的地址 400-499：表明客户引发的错误。500-599：由服务器引发的错误。
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        xhr.responseText = xhr.responseText.replace('\n','')
                        resolve(xhr.responseText)
                    }
                }
            } catch(e) {
                reject('')
            }
        })


    }
}



exports = module.exports = new Jifashi()